package ar.unlam.com.cliente;

import java.util.Iterator;
import java.util.Map;

import model.Usuario;

public class HiloRecibeMensajesChat extends Thread {
	private ClienteChat llamador;
	private static final int INTERVAL = 3*1000;
	
	public HiloRecibeMensajesChat(ClienteChat clienteChat) {
		this.llamador = clienteChat;
	}
	
	public void run(){		
		while(true){
				if(this.llamador.getPantallaChat().getFrame().isVisible()){
					String[] mensajeRecibido = null ;
					try{
						mensajeRecibido = this.llamador.buscarMensajesRecibidos().split("\\|");
					}catch(NullPointerException e){					
					}
					
					if(mensajeRecibido[0]!= null){
						Map<Usuario,PanelDeChat> conversaciones = this.llamador.getPantallaChat().getConversaciones();
						Iterator<Usuario> it = conversaciones.keySet().iterator();
						Usuario buscado = null;
						
						while(it.hasNext()){
							buscado = it.next();
							if(conversaciones.get(buscado).getConversacionId() == Integer.parseInt(mensajeRecibido[0]))
								break;
						}
												
						PanelDeChat panel = this.llamador.getPantallaChat().getConversaciones().get(buscado);
						panel.getHistorialChatTextArea().setText(panel.getHistorialChatTextArea().getText() + 
																 "\n" + mensajeRecibido[1].replace("(No Conectado)","").replace("(Conectado)",""));
						
						if(!this.llamador.getPantallaChat().getFrame().isVisible())
							this.llamador.getPantallaChat().setVisible(true);
						
					}
					try {
						Thread.sleep(INTERVAL);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
			}
		}
	}

}
